One or more aspects relate, in general, to transactional processing, and in particular, to transactional processing in multithreaded computing environments.
Today, there are implementations of transactional execution that only allow one transaction to be present in a microprocessor. This has significant implications on the performance of transactional execution. For example, because only one transaction can be present in the pipeline, transactions cannot overlap in such designs, leading to performance degradation when transactions are used in proximity to one another. As an extension of this limitation, nested transactions become unattractive because they involve multiple transactions being in the pipeline in close proximity (i.e., an outer and an inner transaction).
In multithreaded designs, multiple transactions corresponding to multiple threads can occur concurrently. In one common implementation, transactions from all threads are jointly used to generate a single read and write set used to track the reading from and the writing to a cache. Thus, when one transaction of one thread is rolled back, all transactions in all threads are rolled back.